#!/bin/bash

# 启动程序函数
start_program() {
    PROGRAM_CMD=$1
    LOG_DIR="./logs"
    LOG_FILE="$LOG_DIR/logfile.log"

    # 创建日志目录（如果不存在）
    mkdir -p $LOG_DIR

    # 使用nohup启动程序并将输出重定向到最新日志文件
    nohup $PROGRAM_CMD > $LOG_FILE 2>&1 &
    echo "Program started with nohup. Log file: $LOG_FILE"
}

# 日志轮换函数
rotate_logs() {
    LOG_DIR="./logs"
    LOG_FILE="$LOG_DIR/logfile.log"

    while true; do
        # 等待24小时
        sleep 86400

        # 分割日志文件
        TIMESTAMP=$(date +'%Y-%m-%d_%H-%M-%S')
        ROTATED_LOG_FILE="$LOG_DIR/logfile_$TIMESTAMP.log"

        if [ -f $LOG_FILE ]; then
            mv $LOG_FILE $ROTATED_LOG_FILE

            # 重新创建一个空的日志文件
            touch $LOG_FILE
        fi

        # 删除超过7天的归档日志文件
        find $LOG_DIR -name "logfile_*.log" -type f -mtime +7 -exec rm {} \;
    done
}

# 检查参数是否正确
if [ "$#" -ne 1 ]; then
    echo "Usage: $0 <program_command>"
    exit 1
fi

PROGRAM_CMD=$1

# 启动程序
start_program "$PROGRAM_CMD"

# 启动日志轮换
rotate_logs
